'''
1 导入库：
from multiprocess import Process
2、创建进程对象
process = Process(target=函数, name=进程的名字, args=(给函数传递的参数，为元组类型))
process对象

3、对象调用方法
process.start()  启动进程并执行任务
process.run()  只是执行了任务但是没有启动进程
terminate()  终止进程

4、进程使用全局变量
各个进程在使用全局变量的时候，相当于在把全局变量复制到各自的模块下使用，不会相互干扰
跟是可变还是不可变类型没有影响
5、进程是运算类的才拿进程来做，比较耗时
如果下载类的用线程来做
'''


from multiprocessing import Process
import os
from time import sleep


# 获取进程id，  os.getpid()
# os.getppid()  获取父进程的id
m = 1
def task1(s):
	global m
	while True:
		sleep(s)
		m += 1
		print('这是任务1.。。。。', os.getpid(),'-------', os.getppid(), m)


def task2(s, name):
	global m
	while True:
		sleep(s)
		m += 1
		print('这是任务2.。。。。', os.getpid(),'-------', os.getppid(),name, m)
		

number = 0
if __name__ == '__main__':
	print(os.getpid())
	
	# target表示子进程要执行的函数，name表示子进程的名字,args表示传递参数（元组类型）
	p1 = Process(target=task1, name='任务1', args=(1,))
	# start()表示开始执行进程
	p1.start()
#	print(p1.name)
	
	p2 = Process(target=task2, name='任务2', args=(2, 'aa'))
	p2.start()
#	print(p2.name)

	while True:
		sleep(1)
		m += 1
		print('------------------main',m)
'''	
	while True:
		sleep(0.05)
		number += 1
		if number == 100:
			p1.terminate()
			p2.terminate()
			break
		else:
			print('---------------------number',number)
'''
# 	print('**********************')